#编写一个程序，读取一个文本文件
#统计文件中某个单词出现的次数
#并将结果输出到控制台
#假设文件名为 text.txt、
#文件内容如下：
    #Python is a programming language. python is widely used.
#统计单词'python'出现次数

"""
def count_word_in_file(file_path,target_word):
    #统计文件中指定单词出现的次数（不区分大小写）
    try :
        with open(file_path,"r",encoding='utf-8') as file :
            content = file.read().lower() #将所有内容转为小写以便不区分大小写统计
            return content.count(target_word.lower())
    except FileNotFoundError :
        print(f"错误:找不到文件'{file_path}'")
        return 0
    except Exception as e :
        print(f"读取文件时发生错误:{e}")
        return 0
if __name__ == "__main__":
    file_path = "text.txt"
    target_word = "python"
    count = count_word_in_file(file_path, target_word)
    print(f"单词 '{target_word}' 在文件中出现了 {count} 次。")
"""

#编写一个Python程序，完成以下任务：
#1.打开上一节创建的my_diary.txt 文件（假设文件已存在）
#2.读取文件全部内容并打印到控制台
#3.统计文件的行数并输出：“总行数：x”

"""
def analyze_diary(file_path):
   #读取日记文件内容并统计行数
    try :
        with open(file_path, 'r', encoding='utf-8') as file:
            # 读取全部内容
            content = file.read()
            
            # 打印文件内容
            print("文件内容：")
            print(content)
            
            # 统计行数（空行也计算在内）
            lines = content.count('\n') + 1
            print(f"\n总行数：{lines}")
            
            return lines
    except FileNotFoundError :
        print(f"错误：找不到文件 '{file_path}'")
        return 0
    except Exception as e:
        print(f"读取文件时发生错误：{e}")
        return 0
if __name__ == "__main__":
    file_path = "my_diary.txt"
    analyze_diary(file_path)
"""

#编写一个Python程序，完成以下pyq:
#1.提示用户输入今天的日期（如2023-10-01）和天气（如：晴）
#2.提示用户输入一行今日心情和总结（如：今天完成项目demo！）
#3.将用户输入的内容按以下格式追加写入到my_diary.text文件中（保留历史记录）:
#   text
#   [日期][天气]
#   [用户输入的内容]
#   (空一行分离)
#4.最后打印"今日日记已追加！"
#要求：1.使用with语句和追加模式   2.确保每次追加后有一个空行分隔

"""
def main():
    #获取用户信息
    date = input("请输入今天的日期(如:2023-10-01):")
    weather = input("请输入今天的天气(如:晴):")
    content = input("请输入一行今日心情和总结:")

    #将内容写入日记文件
    with open("my_diary.txt","a",encoding="utf-8") as file :
        file.write(f"[{date}][{weather}]\n")
        file.write(f"{content}\n\n")
    print("今日日记已追加")
if __name__ == "__main__":
    main()
"""





#需求分析
#需求：有一份账单文件，
#记录了消费收入的具体记录，内容如下：
"""
name,date,money,type,remarks
周杰轮,2022-01-01,100000,消费,正式
周杰轮,2022-01-02,300000,收入,正式
周杰轮,2022-01-03,100000,消费,测试
林俊节,2022-01-01,300000,收入,正式
林俊节,2022-01-02,100000,消费,测试
林俊节,2022-01-03,100000,消费,正式
林俊节,2022-01-04,100000,消费,测试
林俊节,2022-01-05,500000,收入,正式
张学油,2022-01-01,100000,消费,正式
张学油,2022-01-02,500000,收入,正式
张学油,2022-01-03,900000,收入,测试
王力鸿,2022-01-01,500000,消费,正式
王力鸿,2022-01-02,300000,消费,测试
王力鸿,2022-01-03,950000,收入,正式
刘德滑,2022-01-01,300000,消费,测试
刘德滑,2022-01-02,100000,消费,正式
刘德滑,2022-01-03,300000,消费,正式
同学们可以将内容复制并保存为 bill.txt文件
"""
#我们现在要做的就是：
#读取文件
#将文件写出到bill.txt.bak文件作为备份
#同时，将文件内标记为测试的数据行丢弃
#实现思路：
#open和r模式打开一个文件对象，并读取文件
#open和w模式打开另一个文件对象，用于文件写出
#for循环内容，判断是否是测试不是测试就write写出，是测试就continue跳过
#将2个文件对象均close()


def process_bill_file() :
    #打开原始文件夹
    with open("bill.txt","r",encoding="utf-8") as infile :
        #读取所有行
        lines = infile.readlines()

        #打开备份文件夹进行写入
        with open("bill.txt.bak","w",encoding="utf-8") as outfile:
            #写入镜头
            outfile.write(lines[0])

            #处理每一行数据
            for line in lines[1:] :
                #检查是否包含“测试”标记
                if "测试" not in line :
                    #如果不是测试数据，写入备份文件
                    outfile.write(line)

    print("文件处理完成!已创建备份并过滤测试数据。")

if __name__ == "__main__":
    process_bill_file()

